﻿Public Class frm_consultarProductos
    Dim accesoDatosProducto As New AccesoDatos("Producto")
    Dim accesoDatosTalleProducto As New AccesoDatos("Talle_Producto")
    Dim accesoDatosTipoProd As New AccesoDatos("TipoProd")
    Dim accesoDatosTipoTela As New AccesoDatos("TipoTela")
    Dim accesoDatosProd As New AccesoDatos("Producto")

    Private Sub frm_consultarProductos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cargarCombo(cmb_tipoProd, accesoDatosTipoProd.leerTabla("TipoProd"), "idTipoProd", "nombre")
        cargarCombo(cmb_tipoTela, accesoDatosTipoTela.leerTabla("TipoTela"), "idTipoTela", "nombre")

        cmb_tipoProd.SelectedIndex = -1
        cmb_tipoTela.SelectedIndex = -1
    End Sub

    Private Sub cargarCombo(ByRef combo As ComboBox, ByRef tablaACargar As Data.DataTable, ByVal indice As String, ByVal campo As String)
        combo.DataSource = Nothing
        combo.DataSource = tablaACargar
        combo.ValueMember = indice
        combo.DisplayMember = campo
    End Sub

    Private Sub cmd_buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_buscar.Click
        Dim consul As String
        If IsNumeric(txt_id.Text) Then
            If accesoDatosProducto.validarExistencia("Producto", "idProducto", txt_id.Text) Then
                dgv_descripcion.DataSource = Nothing
                buscarPorId(txt_id.Text)
                consul = "SELECT Talle.nombre as 'Talle', Talle_Producto.cantidad as 'Cantidad' FROM Talle INNER JOIN Talle_Producto ON (Talle.idTalle = Talle_Producto.idTalle) WHERE Talle_Producto.idProducto = " & txt_id.Text
                dgv_talles.DataSource = accesoDatosTalleProducto.consulta(consul)
            Else
                MessageBox.Show("El codigo de producto ingresado no existe", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                txt_id.Text = ""
                txt_id.Focus()
            End If
        End If
    End Sub

    Public Sub buscarPorId(ByVal id As String)
        dgv_descripcion.DataSource = accesoDatosProducto.consulta("select tp.nombre as 'Tipo Producto', tt.nombre as 'Tela', prod.descripcion as 'Descripcion', prod.precioVenta as 'Precio' from Producto prod INNER JOIN Proveedor prov on(prod.idProveedor=prov.idProveedor) INNER JOIN TipoTela tt on (tt.idTipoTela=prod.idTipoTela) INNER JOIN TipoProd tp on (tp.idTipoProd=prod.idTipoProd) where idProducto = " & id)
    End Sub

    Private Sub cmd_nuevaVenta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_nuevaVenta.Click
        frm_venta.Show()
        Me.Close()
    End Sub

    Private Sub cmb_tipoProd_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb_tipoProd.SelectedIndexChanged
        If IsNumeric(cmb_tipoProd.SelectedValue) Then
            cargarGrillaProducto()
        End If
    End Sub

    Private Sub cargarGrillaProducto()
        dgv_descripcion.DataSource = Nothing
        Dim tabla As New Data.DataTable
        Dim consul As String = "SELECT Producto.idProducto AS 'ID Producto', Proveedor.nombre AS 'Proveedor', TipoProd.nombre AS 'Tipo Producto', TipoTela.nombre AS 'Tela', Producto.descripcion AS 'Descripción', Producto.PrecioCosto AS 'Precio' FROM Producto INNER JOIN Proveedor ON Producto.idProveedor = Proveedor.idProveedor INNER JOIN TipoProd ON Producto.idTipoProd = TipoProd.idTipoProd INNER JOIN TipoTela ON Producto.idTipoTela = TipoTela.idTipoTela"

        If IsNumeric(cmb_tipoProd.SelectedValue) Then
            consul &= " AND producto.idTipoProd = " & cmb_tipoProd.SelectedValue
        End If
        If IsNumeric(cmb_tipoTela.SelectedValue) Then
            consul &= " AND producto.idTipoTela = " & cmb_tipoTela.SelectedValue
        End If
        If txt_descrip.Text <> "" Then
            consul &= " AND producto.descripcion LIKE '%" & txt_descrip.Text & "%'"
        End If

        tabla = accesoDatosProd.consulta(consul)
        dgv_descripcion.DataSource = tabla
        txt_id.Text = ""
        dgv_talles.DataSource = Nothing
    End Sub

    Private Sub cmb_tipoTela_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb_tipoTela.SelectedIndexChanged
        If IsNumeric(cmb_tipoTela.SelectedValue) Then
            cargarGrillaProducto()
        End If
    End Sub

    Private Sub txt_descrip_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_descrip.TextChanged
        cargarGrillaProducto()
    End Sub

    Private Sub dgv_descripcion_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgv_descripcion.DoubleClick
        Dim consul As String
        consul = "SELECT Talle.nombre as 'Talle', Talle_Producto.cantidad as 'Cantidad' FROM Talle INNER JOIN Talle_Producto ON (Talle.idTalle = Talle_Producto.idTalle) WHERE Talle_Producto.idProducto = " & dgv_descripcion.CurrentRow.Cells(0).Value
        dgv_talles.DataSource = Nothing
        dgv_talles.DataSource = accesoDatosTalleProducto.consulta(consul)
    End Sub

    Private Sub cmd_salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_salir.Click
        Me.Close()
    End Sub


    Private Sub cmd_cancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_cancelar.Click
        txt_id.Text = ""
        cmb_tipoProd.SelectedIndex = -1
        cmb_tipoTela.SelectedIndex = -1
        dgv_descripcion.DataSource = Nothing
        dgv_talles.DataSource = Nothing
    End Sub
End Class